/* 
 * File:   OperacionEliminarArchivoCliente.cpp
 * Author: maximiliano
 * 
 * Created on 16 de junio de 2013, 00:10
 */

#include <fstream>
#include <exception>
#include <stdint.h>
#include "client_OperacionEliminarArchivoCliente.h"
#include "common_Codec.h"
#include "common_NumeroUtils.h"

using namespace std;
using namespace TP;
using namespace TP::Operaciones;

#define ARCHIVO_NO_DECLARADO 1
#define ERROR_IO 2
#define ERROR_INTEGRIDAD_REPOSITORIO 3
        
OperacionEliminarArchivoCliente::OperacionEliminarArchivoCliente( uint32_t pToken
                                                  , FileServiceProxy* pFileService
                                                  , Repositorio* pRepositorio
                                                  , const string &pNombreArchivo
                                                  , const uint32_t &pVersionArchivo
                                                  ) : Operacion (pToken)
{
    _repositorio = pRepositorio;
    _fileService = pFileService;
    _nombreArchivo = pNombreArchivo;
    _versionArchivo = pVersionArchivo;
}

OperacionEliminarArchivoCliente::~OperacionEliminarArchivoCliente() {}

void OperacionEliminarArchivoCliente::ejecutar(){
    
    this->setFinalizada(false);
    
    RepoItem* item = _repositorio->GetRepoItemByFilename(_nombreArchivo);
    
    if (NULL != item)
    {
        if (item->GetEstado() == ARCHIVO_A_ELIMINAR_EN_CLIENTE)
        {
            _fileUtils.EliminarArchivo (item->GetRutaCompletaArchivo());
            _repositorio->EliminarItem(item);
        }
    }
    
    this->setFinalizada(true);
}

void OperacionEliminarArchivoCliente::procesarRespuesta (vector<string> &pRespuesta){}
